package 代码记录.指定公司代码练习记录.西安.分值100分;

import java.util.Scanner;

/**
 * @author zx
 * @create 2023-07-09 16:02
 * 和力扣1419一样的题目：力扣的做法更好！
 */
public class 数大雁 {//96 --copy
    /**
     * 一方面，由于蛙鸣的字母是按照croak的顺序出现的，所以在遍历的过程中必须要满足c>=r>=o>=a>=k，
     * 并且遍历完成后必须满足c=r=o=a=k（每个蛙鸣必须是完整的），否则就是不合法的，返回-1。
     *
     * 另一方面，其实可以把蛙鸣看成是若干区间进行重叠，遍历到str的每个位置都会有一个“各个字母的频数”状态，
     * 所有位置的状态中“并行度”最大的地方就是最少需要的青蛙数量。
     * 由于k是一次蛙鸣的结尾，c是一次蛙鸣的开头，且c>=k，所以某个位置的“并行度”其实就是c-k，维护这个最大值即可。
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        int q = 0, u = 0, a = 0, c = 0, k = 0;
        int res = 0;
        for(int i = 0;i < str.length();i++){
            if(str.charAt(i) == 'q') {
                q++;
            }
            if(str.charAt(i) == 'u') {
                u++;
            }
            if(str.charAt(i) == 'a') {
                a++;
            }
            if(str.charAt(i) == 'c') {
                c++;
            }
            if(str.charAt(i) == 'k') {
                k++;
            }
            if(!(q >= u && u >= a && a >= c && c >= k)){
                System.out.println(-1);
                return;
            }
            res = Math.max(res, q - k);
        }
        res = (q == u && u == a && a == c && c == k) ? res : -1;
        System.out.println(res);
    }
}
